In the design of battery-powered processor-based systems for specific applications, e.g. cellular telephones, test instruments, etc., the current trend is for increased performance, operating frequency, and integration density while decreasing power consumption. These goals are often mutually exclusive, necessitating a design compromise. A proper design compromise requires an analysis of all pertinent factors, including processor energy consumption.
One of the most critical factors in system design is battery life. Batteries are traditionally rated in current over time, e.g. ampere-hours. Since batteries have a nominally fixed voltage, battery usage is directly related to energy (power over time) usage, e.g. volt-ampere-hours or watt-hours. The amount of energy consumed by the system, therefore, has a direct bearing upon battery life.
Processor energy consumption is of concern to the designer. Traditional methods of optimizing processor energy consumption utilize best-guess and rule-of-thumb techniques for processor selection. In this approach, a designer selects a processor based upon spec-sheet data and personal experience. The designer then designs, prototypes, and programs the system, before actually measuring the resultant energy consumption.
The traditional approach has several inherent problems, one of which is that spec-sheet data for a given processor rarely provides adequate energy consumption data upon which to base an objective processor selection. This data lack may be partially compensated for by the designer's personal experience with the processor or family of processors in question, but at the cost of selection objectivity. Even with the best and most experienced designers, however, the vagaries of design often result in power consumptions of more than double the design estimates.
Another problem deals directly with the designer's personal experience. Once a designer has gained sufficient experience to successfully predict performance for a given processor or family of processors, the tendency arises to view all designs from that perspective. That is, the designer may unconsciously become processor biased, and begin to think in terms of "what is the best way to use processor XYZ for this task," rather than "what is the best processor for this task."
Yet another problem may arise in that the energy consumption of a processor is traditionally measured after the system has been prototyped and programmed. By this point in the design cycle, considerable resources have been expended in system development. A designer would, naturally, be reluctant to scrap the prototype and start again even if testing were to reveal that a different processor may have been a better choice. As a result, a system may be made to suffer with a less than optimal processor and with a greater than necessary power consumption.
Again, a problem inherent in traditional techniques is that of code optimization. As is well known to system programmers, there are many ways of encoding virtually any function. What is often unappreciated is that different methods of encoding may consume different amounts of energy in a given processor. Traditionally, code is optimized for speed or for size, energy rarely being considered. Unfortunately, code that consumes the least energy may be neither the fastest code nor the most compact code.
The energy consumed by a processor for a given instruction or series of instructions is dynamic. That is, the energy consumption depends heavily upon the input and output data being processed. This means that this energy consumption cannot be accurately tabulated on an instruction by instruction basis independent of the data being processed.
What is desired is a technique for estimating processor energy consumption well in advance of prototyping. By so doing, an objective processor selection may be made. The desired estimating technique should be flexible enough to allow for processor reselection, should that be indicated, without the expenditure of significant design resources.
At the same time, the desired estimating technique should be accurate enough so that the actual processor energy consumption is significantly equal to the design estimate, e.g. within a few per cent.
Likewise, the desired estimating technique should evaluate processor energy consumption for a given instruction or series of instructions dynamically. That is, is should be able to take into account input and output conditions for those instructions in a simulated real-world environment.
In the course of determining overall system energy consumption, the desired estimating technique should also determine the worst-case processor power consumption. As worst-case processor power consumption requires maximal battery current, it may be utilized to select the appropriate system battery and in determining circuit layout.